#include "stdafx.h"
PingData::PingData()
{
	PingArray =NULL;
	IdpArray=NULL;
}
PingData::~PingData()
{
	if (PingArray!=NULL)
		delete[] PingArray;
	if (IdpArray!=NULL)
		delete[] IdpArray;
}
void PingData::Init(uint uiCount,time_t tm)
{
	uiMachineCount=uiCount;
	ttTime=tm;
	if (PingArray!=0)
		delete[] PingArray;
	if (IdpArray!=NULL)
		delete[] IdpArray;
	PingArray=new uint[uiMachineCount];
	IdpArray=new uint[uiMachineCount];
	memset(PingArray,0,uiMachineCount*sizeof(uint));
	memset(IdpArray,0,uiMachineCount*sizeof(uint));
}
void PingData::SetIdp(uint uiNum, uint uiId)
{
	if (uiNum<uiMachineCount)
		IdpArray[uiNum]=uiId;
}
void PingData::GetElement(uint *pIdp,uint *pPing, uint uiNum)
{
	if (uiNum>=uiMachineCount)
		return;
	(*pIdp)=IdpArray[uiNum];
	(*pPing)=PingArray[uiNum];
}
void PingData::SetPing(uint uiNum, uint uiPing)
{
	if (uiNum<uiMachineCount)
		PingArray[uiNum]=uiPing;
}
//////////////////////////////////////////////////////////////////////////
uint CreatePingDataMessage(char*buf, PingData& pd)
{
	uint uiSize=12+8*pd.uiMachineCount;
	uint uiPos=0;
	uint tmp=EVENT_SEND_DATA;
	memcpy(buf,&tmp,sizeof(tmp));
	uiPos+=sizeof(tmp);
	memcpy(&buf[uiPos],&(pd.ttTime),sizeof(pd.ttTime));
	uiPos+=sizeof(pd.ttTime);
	for (int i=0; i<pd.uiMachineCount; i++)
	{
		uint uiIdp, uiPing;
		pd.GetElement(&uiIdp,&uiPing,i);
		memcpy(&buf[uiPos],&uiIdp,sizeof(uiIdp));
		uiPos+=sizeof(uiIdp);
		memcpy(&buf[uiPos],&uiPing,sizeof(uiPing));
		uiPos+=sizeof(uiPing);
	}
	return uiSize;
}